import { camelCase, upperFirst } from 'lodash'
import { defineAsyncComponent } from 'vue'

const components = import.meta.glob('./elementUI/(**/*|*).vue')
// 全局组件的注册
const install = function (app) {
  Object.keys(components).forEach(fileName => {
    // 获取组件配置
    const file = components[fileName]
    // 获取组件的 PascalCase 命名
    const componentName = upperFirst(
      camelCase(
        // 获取和目录深度无关的文件名
        fileName
          .split('/')
          .pop()
          .replace(/\.\w+$/, '')
      )
    )
    // 全局注册组件
    app.component(`${componentName}`, defineAsyncComponent(file))
  })
}
export default { install }
